#include "gobang.h"
#include <stdio.h>
#include <stdlib.h>
#include"getch.h"
//定义棋盘
char board[15][15];

//角色
char role;

//定义光标的坐标
char cur_x=7;
char cur_y=7;

// 初始化棋盘
void board_init(void)
{
	for(char x=0;x<15;x++)
	{
		for(char y=0;y<15;y++)
		{
			board[x][y]='*';
		}
	}
}

// 显示棋盘
void board_show(void)
{
	system("clear");
	printf("\033[2J");
	for(char x=0;x<15;x++)
	{
		for(char y=0;y<15;y++)
		{
			printf("%c ",board[x][y]);

		}
		printf("\n");
	}
}

// 落子
void key_get(void)
{
	while(1)
	{
		//设置光标位置
		printf("\033[%hhd;%hhdH",cur_x,cur_y*2-1);
		switch(getch())
		{
			case 183:cur_x>1&&cur_x--;continue;
			case 184:cur_x<15&&cur_x++;continue;
			case 185:cur_y<15&&cur_y++;continue;
			case 186:cur_y>1&&cur_y--;continue;
			case 10:
				if('*'==board[cur_x-1][cur_y-1])
				{
					board[cur_x-1][cur_y-1]=role;
					return;
				}
		}
	}
}

// 检查是否形成五子
bool judge_win(void)
{
	char x;
	char y;
	char count =0;
	char role=board[cur_x-1][cur_y-1];
	//横向测试
	for(y=cur_y-2;y>=0;y--)
	{
		if(board[cur_x-1][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	for(y=cur_y;y<16;y++)
	{
		if(board[cur_x-1][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	if(count>=4)
	{
		return 1;
	}
	count=0;
	//横测结束

	//竖测开始
	for(x=cur_x-2;x>=0;x--)
	{
		if(board[x][cur_y-1]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	for(x=cur_x;x<16;x++)
	{
		if(board[x][cur_y-1]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	if(count>=4)
	{
		return 1;	
	}
	count=0;
	//竖测结束

	//左上右下开始
	for(x=cur_x-2,y=cur_y-2;x>=0&&y>=0;x--,y--)
	{
		if(board[x][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	for(x=cur_x,y=cur_y;x<16&&y<16;x++,y++)
	{
		if(board[x][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}	
	}
	if(count>=4)
	{
		return 1;
	}
	count =0;
	//左上右下结束

	//左下右上开始
	for(x=cur_x,y=cur_y-2;x<16&&y>=0;x++,y--)
	{
		if(board[x][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	for(x=cur_x-2,y=cur_y;x>=0&&y<16;x--,y++)
	{
		if(board[x][y]==role)
		{
			count++;
		}
		else
		{
			break;
		}
	}
	if(count>=4)
	{
		return 1;
	}
	count =0;
	return 0;

}
